package com.yntx.usercenter.authentication.service;

import com.yntx.usercenter.authentication.dto.*;
import com.yntx.usercenter.authentication.vo.UserVo;
import com.yntx.usercenter.common.web.ApiResult;

/**
 * 用户服务
 *
 * @author jielihaofeng
 * @date 2023-04-24 11:59
 */
public interface UserService {

    /**
     * 注册
     *
     * @param userRegisterDto 用户注册dto
     * @return {@link ApiResult}<{@link UserRegisterResultDto}>
     */
    ApiResult<Long> register(UserRegisterDto userRegisterDto);

    /**
     * 登录
     *
     * @param userLoginDto 用户登录dto
     * @return {@link ApiResult}<{@link UserLoginResultDto}>
     */
    ApiResult<UserLoginResultDto> login(UserLoginDto userLoginDto);

    /**
     * 注销
     *
     * @param userLogoutDto 用户注销dto
     * @return {@link ApiResult}<{@link ?}>
     */
    ApiResult<?> logout(UserLogoutDto userLogoutDto);

    /**
     * 用户信息
     *
     * @param userInfoDto 用户信息dto
     * @return {@link ApiResult}<{@link UserVo}>
     */
    ApiResult<UserVo> userInfo(UserInfoDto userInfoDto);

}
